﻿#include "datastructure.h"
#include "Stack/stack.h"
#include "LinkedList/linkedlist.h"
#include "LinkedList/doublylinkedlist.h"
#include "BinaryTree/binarytree.h"
#include <qdebug.h>
#include "Search/binarysorttree.h"

void dataStructureTest()
{
    //单链表
    //    LinkedListTest();
    //双向链表
    DoublyLinkedListNodeTest();
}
void BinaryTreeTest()
{
    //0 二叉树基本函数测试
    //    BinaryTreeNodeTest();

    //1 记数
    //    QuestionNodeCount();
    //    QuestionNodeCount2();

    //2 重建二叉树
    //    Q2_ReCreate_Test();
    //3 子树
    //    Q3_HasSubtreeTest();
    //4 镜像
    //    Q4_MirrorTest();
    //5 二叉树中和为某一值的路径
    Q5_FindPathTest();

}

void StackTest()
{
    qDebug()<<"----"<<__func__<<"----";
    //连个栈实现队列，先进先出
    //    Q1_test();
    //2 min函数
    //    Q2_test();
    //3 栈的压入、弹出序列
    Q3_test();

    qDebug()<<"----"<<__func__<<"----";
}

void LinkedListTest()
{
    qDebug()<<"----"<<__func__<<"----";
    //链表基本问题测试函数
    //    LinkedBaseListTest();
    //链表其他问题测试函数
    //    LinkedListOtherQuestionTest();

    //4 复杂链表赋值
    Q4_CloneTest();

    qDebug()<<"----"<<__func__<<"----";
}

void BinarySortTreeTest()
{
    qDebug()<<"----"<<__func__<<"----";
    //二叉排序树基本函数
//    BinarySortTreeNodeTest();

    //3 二叉搜索树的后序遍历序列
    //    Q3_VerifySquenceOfBSTTest();
    //4 二叉排序树转化成双向链表
    Q4_ConvertTest();


    qDebug()<<"----"<<__func__<<"----";
}
